package com.net.oil.http.custom;

import com.net.oil.app.Constant;
import com.net.oil.app.MyApp;
import com.net.oil.app.UserInfoManager;
import com.net.oil.bean.BaseBean;
import com.net.oil.base.EventBussMessage;
import com.net.oil.widget.ToastUtil;

import de.greenrobot.event.EventBus;
import io.reactivex.Observer;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import retrofit2.HttpException;

/**
 * 作者：lch
 * 时间：2017/12/14:11:03
 * 邮箱：245850413@qq.com
 * 说明：没有类型的BaseObserverNoT
 */

public abstract class BaseObserverNoT implements Observer<BaseBean> {

    @Override
    public void onSubscribe(@NonNull Disposable d) {
    }

    @Override
    public void onNext(@NonNull BaseBean tResultBean) {

    }

    @Override
    public void onError(@NonNull Throwable e) {
        if (e instanceof ApiException){
            ApiException exception = (ApiException) e;

            /* 600登陆失效，清除用户信息，注：如果后期需要其他操作，可以发送广播或者eventBus消息等，在对应需要处理的界面接受消息处理即可 */
            if (exception.getErrorCode() == 600){
                clearUserInfo();
                 /* 发出退出用户登录信息的消息，收到消息的页面会更新ui，（主要是个人中心ui更新，和首页ui更新） */
                EventBus.getDefault().post(new EventBussMessage(Constant.LOGOUT_CODE, Constant.LOGOUT_MESSAGE));
            }
            ToastUtil.showErrorToast(MyApp.getApplication().getApplicationContext(), exception.getErrorMessage());
        }else if (e instanceof HttpException){
            ToastUtil.showErrorToast(MyApp.getApplication().getApplicationContext(), "网络请求错误");
        }
    }

    @Override
    public void onComplete() {

    }

    /**
     * 清除用户信息
     */
    private void clearUserInfo(){
        UserInfoManager.getInstance().clearUserInfo();
    }

}
